package shiqi.ProxyPattern.springAop;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

//测试
public class client {

    public static void main(String[] args) {
        InvocationHandler handler = null;
        AbstarctSubject subject = null;

        //Proxy类，即动态代理类，根据传入的接口返回一个动态代理类的实例，第一入参是代理类的类加载器，第二个是代理类要实现的接口，第三个是指定的调用处理程序类
        handler = new DynamicProxy(new RealSubjectA());//传入代理对象
        //这里做到工作应该是代理模式的流程，代理类实现接口，并持有handler
        subject = (AbstarctSubject) Proxy.newProxyInstance(AbstarctSubject.class.getClassLoader(),new Class[]{AbstarctSubject.class},handler);
        subject.request();

        MyProxy myProxy = new MyProxy();
        myProxy.request();
    }
}
